import { defineStore } from 'pinia'

// 第一个参数是应用程序中 store 的唯一 id
// 1．定义并导出容器
//参数1:容器的ID，必须唯一，将来Pinia 会把所以的容器挂载到根容器
//参数2:选项对象
export const userStore = defineStore('main',{
 // 推荐使用 完整类型推断的箭头函数
  state:() => {
    return {
      // 所有这些属性都将自动推断其类型
	  hasLogin: false,
	  token: '',
	  phone:"",
	  xieyiLink:"http://www.guangxins.cn/xieyi.html",
	  userData:{
		  isLogin:false,
		  userinfo:{},
		  orderinfo:{},
		  jifen:5000,
		  expireTime:0,  //现在时间-创建时间>保存时间
		  saveTime:0,  //创建时间
	  },
	  favourites:[], //本地收藏夹，用来存放用户收藏的商品id
	  getFavId:-1, //用来获取收藏的id
	  backRouter:null, //登录后，返回的路由 字符串类型 "../pages/shop_detail/shop_detail?pid=9"
      lookProductHistory:[], //浏览商品记录 [{"pid":1,"productInfo":"产品详细对象"}]
    }
  },
  /**
   * 类似于组件的 computed，用来封装计算属性,有缓存的功能
   **/
  getters:{
	  
  },
  
  /**
   * 类似于组件的methods，封装业务逻辑，修改state
   **/
   actions:{
	   addjifen(){
		 this.userData.jifen+=2500;  
	   },
	   getjifen(){
		 return this.userData.jifen;  
	   },
	   addFavourites(favObj:favouritesType){
		   let index=this.favourites.findIndex(item=>parseInt(item.productId)===favObj.productId);
		   if(index===-1){
			   this.favourites.push(favObj);
		   }
	   },
	   removeFavourites(favId:number){
			let index=this.favourites.findIndex(item=>parseInt(item.favId)===favId);
			if(index!=-1)
				this.favourites.splice(index,1);
	   },
	   isFavouritesExist(productId:number){
		   let index=this.favourites.findIndex(item=>parseInt(item.productId)===productId);
		   if(index!=-1){
				//读取收藏的id
				this.getFavId=this.favourites[index].favId;
				return true;  
			}else{
				return false;
			}		
	   },
	   getCurFavId(){
			return this.getFavId;  
	   },
	   setBackRouter(pathUri:string){
		   this.backRouter=pathUri;
	   },
	   //添加浏览产品id
	   add(productId:number,productInfo:any){
		   let index:number=this.lookProductHistory.findIndex(item=>item.pid===productId);
		   if(index===-1){
			   var obj={};
			   obj.pid=productId;
			   obj.productInfo=productInfo;
			   this.lookProductHistory.push(obj);
			   console.log("浏览过的产品",this.lookProductHistory);
		   }
	   },       
	   //清空所有浏览过记录
	   clearAllHistory(){
		   this.lookProductHistory=[];
	   },	   
	   //重置
	    remove(){
			this.userData.isLogin=false
			this.userData.userinfo={}
			this.userData.expireTime=0
			this.userData.saveTime=0
		}
   },
  /**
   * 类似于组件的tethods，封装业务逻辑，修改state
   **/
   persist: {
       enabled: true,
	   /* strategies: [{
		 //storage: localStorage,
		 paths: ['userData','lookProductHistory','backRouter'],//指定要长久化的字段
	   }] */
   },
})